home *** CD-ROM | disk | FTP | other *** search
- #!/sbin/runscript
- # Copyright 1999-2005 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- # $Header: /var/cvsroot/gentoo-x86/net-firewall/iptables/files/iptables-1.3.2.init,v 1.2 2005/08/10 23:11:12 vapier Exp $
-
- opts="save reload panic"
-
- iptables_name=${SVCNAME}
- if [[ ${iptables_name} != "iptables" && ${iptables_name} != "ip6tables" ]] ; then
- iptables_name="iptables"
- fi
-
- iptables_bin="/sbin/${iptables_name}"
- case ${iptables_name} in
- iptables) iptables_proc="/proc/net/ip_tables_names"
- iptables_save=${IPTABLES_SAVE};;
- ip6tables) iptables_proc="/proc/net/ip6_tables_names"
- iptables_save=${IP6TABLES_SAVE};;
- esac
-
- depend() {
- before net
- use logger
- }
-
- set_table_policy() {
- local chains table=$1 policy=$2
- case ${table} in
- nat) chains="PREROUTING POSTROUTING OUTPUT";;
- mangle) chains="PREROUTING INPUT FORWARD OUTPUT POSTROUTING";;
- filter) chains="INPUT FORWARD OUTPUT";;
- *) chains="";;
- esac
- local chain
- for chain in ${chains} ; do
- ${iptables_bin} -t ${table} -P ${chain} ${policy}
- done
- }
-
- checkkernel() {
- if [[ ! -e ${iptables_proc} ]] ; then
- eerror "Your kernel lacks ${iptables_name} support, please load"
- eerror "appropriate modules and try again."
- return 1
- fi
- return 0
- }
- checkconfig() {
- if [[ ! -f ${iptables_save} ]] ; then
- eerror "Not starting ${iptables_name}. First create some rules then run:"
- eerror "/etc/init.d/${iptables_name} save"
- return 1
- fi
- return 0
- }
-
- start() {
- checkconfig || return 1
- ebegin "Loading ${iptables_name} state and starting firewall"
- ${iptables_bin}-restore ${SAVE_RESTORE_OPTIONS} < "${iptables_save}"
- eend $?
- }
-
- stop() {
- if [[ ${SAVE_ON_STOP} == "yes" ]] ; then
- save || return 1
- fi
- checkkernel || return 1
- ebegin "Stopping firewall"
- for a in $(<${iptables_proc}) ; do
- ${iptables_bin} -F -t $a
- ${iptables_bin} -X -t $a
-
- set_table_policy $a ACCEPT
- done
- eend $?
- }
-
- reload() {
- checkkernel || return 1
- ebegin "Flushing firewall"
- for a in $(<${iptables_proc}) ; do
- ${iptables_bin} -F -t $a
- ${iptables_bin} -X -t $a
- done
- eend $?
-
- start
- }
-
- save() {
- ebegin "Saving ${iptables_name} state"
- touch "${iptables_save}"
- chmod 0600 "${iptables_save}"
- ${iptables_bin}-save ${SAVE_RESTORE_OPTIONS} > "${iptables_save}"
- eend $?
- }
-
- panic() {
- checkkernel || return 1
- [[ -e ${svcdir}/started/${iptables_name} ]] && svc_stop
-
- ebegin "Dropping all packets"
- for a in $(<${iptables_proc}) ; do
- ${iptables_bin} -F -t $a
- ${iptables_bin} -X -t $a
-
- set_table_policy $a DROP
- done
- eend $?
- }
-